GitHub 2019年漏洞奖励计划最值得回顾的2个精彩 bug
GitHub 发布博客文章指出,截止2020年2月份,GitHub 漏洞奖励计划已走过六个年头。GitHub提到,六年中支付的漏洞奖励金已超过100万美元,其中2019年几近59万美元,并概述了2019年收到的两个最值得回顾的漏洞。奇安信代码卫士团队节选编译如下:
使用跨站 HEAD 请求绕过OAuth 流程
@not-an-ardvark 向GitHub 漏洞奖励计划提交了很多很好的漏洞报告,不过这里所述的漏洞影响尤大。
GitHub 提供了集成商和GitHub 生态系统交互的多种方式,其中一种交互方式是通过 OAuth 应用程序使用 GitHub,允许该应用程序代表 GitHub 用户采取行动。在访问用户数据前,OAuth 应用必须将该用户重定向至 GitHub.com,查看所请求的权限并明确授权该应用程序。@not-an-ardvark 发现一种无需任何用户交互就能够绕过 GitHub 控制授权 OAuth 应用程序的方式。
GitHub处理GitHub.com状态更改请求如授权 OAuth 应用程序依靠的是 Ruby On Rails 的跨站点请求伪造防护。GitHub 会在收到 POST 请求时验证的每个表单元素的 DOM 中注入一个特殊的令牌。OAuth 应用程序授权流程使用要求有效 CSRF 令牌的POST 请求。然而,OAuth 控制器错误地允许 POST 和 HEAD 请求触发授权逻辑。GitHub 在处理 HEAD 请求时跳过 CSRF 验证,因为这些请求并非状态更改。这就导致恶意网站自动授权 OAuth 应用程序,而无需任何用户交互。
鉴于该漏洞的严重性,因此需要尽快修复。GitHub 和工程团队密切合作并在收到漏洞报告提交的3个小时内向 GitHub 用户推出修复方案,同时和 SIRT 工程师开展完整调查并证实该漏洞并未遭在野利用。另外,为所有受支持的 GitHub 企业服务器推出补丁。鉴于该漏洞的严重性及其详细的 writeup,GitHub向 @not-an-ardvark 颁发2.5万美元的奖励。
这个 bug 展示了研究人员在提升 GitHub 整体安全方面发挥的重要作用。该漏洞并未遭在野利用。
该漏洞的详情可见:
https://blog.teddykatz.com/2019/11/05/github-oauth-bypass.html。
通过命令注入在 GitHub.com 实现远程代码执行
@ajxchapman 通过触发 Mercurial 导入功能中的命令注入,在 GitHub.com 上实现远程代码执行。导入逻辑并未正确地清洁分支名称,导致恶意构造的分支名称在 GitHub 上执行代码。由于该导入功能非常复杂,因此一般会在与生产网络隔离的专门服务器上的沙箱中运行导入代码。这种隔离限制了该漏洞的影响力,因此 GitHub 能够很快地为 GitHub.com 发布修复方案并将 GitHub 企业服务器客户向后移植修复方案。GitHub 还为类似问题审计了导入逻辑并从日志系统证实该漏洞并未遭在野利用。
这个bug 的精彩之处在于其根因:它最终是由一个过时的依赖关系引发的。该bug 存在于处理代码导入的依赖关系中,曾在上游被修复。然而,GitHub 未能更新至最新版本,因而易受该问题影响。该问题强调了依赖关系管理对安全计划整体成功所起的重要作用。
漏洞的具体详情可见:
https://ajxchapman.github.io/。
题图:Pixabay License
本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。